package com.zzyy.study.trace;

import com.zzyy.study.aop.ResultTraceIdAspect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @auther zzyy
 * @create 2024-04-18 20:03
 *
 * @Configuration注解的proxyBeanMethods属性的作用
 *
 * 注解的意思是proxyBeanMethods配置类是用来指定@Bean注解标注的方法是否使用代理，
 * 2.1 默认是true使用代理，直接从IOC容器之中取得对象；
 *
 * 2.2 如果设置为false,也就是不使用注解，每次调用@Bean标注的方法获取到的对象和IOC容器中的都不一样，
 * 是一个新的对象，所以我们可以将此属性设置为false来提高性能。
 */
@Configuration(proxyBeanMethods = false)
public class TraceConfiguration {
    @Bean
    public TraceFilter traceFilter() {
        return new TraceFilter();
    }

    @Bean
    public ResultTraceIdAspect fillRequestIdAspect() {
        return new ResultTraceIdAspect();
    }
}
